import { _decorator, Component, Button, Label, log, resources } from 'cc';
import { MiniGameSdk } from './MiniGameSdk';
const { ccclass, property } = _decorator;

// 声明全局 tt 对象
declare const tt: any;

@ccclass('KuaishouSidebarHandler')
export class KuaishouSidebarHandler extends Component {
    // 按钮组件引用
    private button: Button = null;
    
    // 用于显示状态信息的Label
    @property(Label)
    content: Label = null;

    protected onLoad(): void {
        // 获取按钮组件
        this.button = this.getComponent(Button);
        if (!this.button) {
            log('请给当前节点添加Button组件');
            return;
        }

        // let buttonEntrance = this.node.getChildByName('Canvas')?.getChildByName('Button');
        // if (buttonEntrance) {
        //     return;
        // }
        // if (MiniGameSdk.isBytedance()) {
        //     //快手环境，检测侧边栏存在
        //     MiniGameSdk.BytedanceSidebar.checkSideBar((success: boolean) => {
        //         // 根据侧边栏存在性激活或禁用游戏入口按钮
        //         console.log('快手环境，检测侧边栏存在', success);
        //     });
        // } else {
        //     // 非快手小游戏环境，直接激活游戏入口按钮
        //     // 非快手环境，正常显示按钮
        //     return
        // }

        // // 设置监听器，以处理来自侧边栏的交互事件
        // MiniGameSdk.BytedanceSidebar.listenFromSidebar((success: boolean) => {
        //     // 如果交互成功，显示奖励提示
        //     if (success) {
        //         console.log('跳转侧边栏成功');
        //         MiniGameSdk.API.showToast('侧边栏奖励', 5);
        //     }
        // });

        // 绑定按钮点击事件
        this.button.node.on(Button.EventType.CLICK, this.handleSidebarNavigation, this);
    }

    /**
     * 处理侧边栏导航逻辑：显示抖音激励广告
     */
    private handleSidebarNavigation() {
        console.log("您点击了这个按钮");

        // 显示抖音激励广告
        const videoAd = tt.createRewardedVideoAd({
            adUnitId: "2bajh7i96gn3lc9a40",
        });
        
        videoAd.onLoad(() => {
            console.log("广告加载完成");
        });
        
        videoAd.onClose(res => {
            if (res && res.isEnded) {
                console.log('观看广告完成，获得奖励');
                this.updateContent('观看广告完成，获得奖励');
            } else {
                console.log('用户未看完广告');
                this.updateContent('用户未看完广告');
            }
        });
        
        videoAd.onError(err => {
            console.log("广告组件出现问题", err);
            this.updateContent('广告加载失败');
        });
        
        videoAd.load();
        
        videoAd.show()
            .then(() => {
                console.log("广告显示成功");
            })
            .catch((err) => {
                console.log("广告组件出现问题", err);
                // 可以手动加载一次
                videoAd.load().then(() => {
                    console.log("手动加载成功");
                    videoAd.show();
                });
            });
    }

    /**
     * 更新显示内容
     */
    private updateContent(text: string) {
        if (this.content) {
            this.content.string = text;
        }
        log(text);
    }

    protected onDestroy(): void {
        // 移除事件监听，防止内存泄漏
        if (this.button) {
            this.button.node.off(Button.EventType.CLICK, this.handleSidebarNavigation, this);
        }
    }
}
    